package cn.hdu.goods.cart.service;

import cn.hdu.goods.cart.dao.CartItemDao;
import cn.hdu.goods.cart.domain.CartItem;
import cn.itcast.commons.CommonUtils;

import java.sql.SQLException;
import java.util.List;

public class CartItemService {

    private CartItemDao cartItemDao = new CartItemDao();

    public List<CartItem> myCart(String uid) {
        try {
            return cartItemDao.findByUser(uid);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public void add(CartItem cartItem) {
        /**
         * 1.使用uid和bid查询这个条目是否存在
         */
        try {
            CartItem _cartItem = cartItemDao.findByUidAndBid(
                    cartItem.getUser().getUid(), cartItem.getBook().getBid());
            if (_cartItem == null) {//如果原来没有这个条目，那么添加条目
                cartItem.setCartItemId(CommonUtils.uuid());
                cartItemDao.addCartItem(cartItem);
            } else {//如果原来有这个条目，修改数量
                int quantity = cartItem.getQuantity() + _cartItem.getQuantity();
                cartItemDao.updateQuantity(_cartItem.getCartItemId(), quantity);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public void batchDelete(String cartItemIds) {
        try {
            cartItemDao.batchDelete(cartItemIds);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public CartItem updateQuantity(String cartItemId, int quantity) {
        try {
            cartItemDao.updateQuantity(cartItemId, quantity);
            return cartItemDao.findByCartItemId(cartItemId);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public List<CartItem> loadCartItems(String cartItemIds) {
        try {
            return cartItemDao.loadCartItems(cartItemIds);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}
